package com.znow.admin.dao.mapper.sys;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.znow.admin.dao.entity.sys.SysPermissionEntity;
import com.znow.admin.dao.entity.sys.SysRolePermissionRelationEntity;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 系统权限映射器
 *
 * @author Nemo
 * @date 2022/11/01
 */
@Repository
public interface SysPermissionMapper extends BaseMapper<SysPermissionEntity> {

    /**
     * 根据用户查询出关联的所有权限
     *
     * @param userId 用户id
     * @return {@link List}<{@link SysPermissionEntity}>
     */
    List<SysRolePermissionRelationEntity> selectPermissionByUserId(@Param("userId") Long userId);

    /**
     * 根据角色查询权限数据
     *
     * @param roleIdList 角色id列表
     * @return {@link List}<{@link SysRolePermissionRelationEntity}>
     */
    List<SysRolePermissionRelationEntity> selectPermissionByRoleIds(@Param("roleIdList") List<Long> roleIdList);

    /**
     * 根据父类ID查询
     *
     * @param parentId 父类ID
     * @return {@link List}<{@link SysPermissionEntity}>
     */
    List<SysPermissionEntity> selectPermissionByParentId(@Param("parentId") Long parentId);

    /**
     * 选择计算名称
     *
     * @param permissionName 许可名字
     * @return int
     */
    Integer selectCountPermissionName(String permissionName);

    /**
     * 选择计算名称
     *
     * @param permissionCode 许可名字
     * @return int
     */
    Integer selectCountPermissionCode(String permissionCode);

}
